Maintaining a History of Query Results

ABSTRACT

A method and system for maintaining history of query results is provided. In one aspect, a query and corresponding results retrieved for providing to the requestor are intercepted and saved. Related information about the query and the results are gathered and saved with the query and the results. The saved information may be filtered, consolidated, or otherwise processed and stored in a query storage. The saved information may be queried and be the basis of information from which results to other queries are obtained.

TECHNICAL FIELD

This application relates to maintaining information associated with queries performed through a querying system or application.

BACKGROUND

Searches for information may be performed using various applications and search engines. For instance, a myriad of search engines are currently available to Internet users for looking up information on the Internet. Numerous businesses offer applications and-user interfaces such as the World Wide Web pages to help customers and visitors to look up information about their businesses. Other applications offer various user interfaces that allow searching for information.

To search for information, a query is typically entered on the various user interfaces described above. The query may take the form of keywords or search terms and/or search arguments. The query may also be in natural language such as “What's the weather today?”

The search engines and applications accept these queries, search for the information requested in the query in various databases and storages and provide the results of the queries to the users. In the process of accepting the queries and providing the results to the queries, a huge amount of information can be gathered about the queries and the results. The gathered information in turn may be used to gain insight and patterns in various user behaviors. Thus, it would be useful to save the various data related to the queries and the results, for example, to extract useful information from those various data, for instance, to better promote and efficiently manage businesses.

SUMMARY

A method and system for maintaining history of queries and results is provided. The method in one aspect includes receiving a query and retrieving one or more results of the query. Context information about the query is gathered and data about the query, the one or more results of the query, or the context information, or combination thereof, is stored.

The method in another aspect includes filtering the query data and storing the filtered query data. In this aspect, a query and one or more results of the query are received. Context information associated with the query and the one or more results is gathered. The query, the one or more results of the query, or the context information, or combination thereof is filtered and the filtered query data is stored.

The method in yet another aspect includes consolidating the query data and storing the consolidated query data. In this aspect, a query and one or more results of the query are received. Context information about the query is gathered. A determination is made as to whether the query was previously performed, and if the query was previously performed, the query, the one or more results of the query, or the context information, or combination thereof is consolidated into consolidated query data. In this aspect, only the consolidated information may be stored if the same query data was stored previously.

The system in one aspect includes a query module operable to receive a query from an end user and return one or more results to the end user, and a storage module operable to intercept the query and the one or more results from the query module. The storage module is further operable to store the query, the one or more results, context information associated with the query, or combination thereof, in a query storage module.

The system in another aspect may include a filter module operable to filter the intercepted query, the one or more results, and the query context information. In this aspect, the storage module stores the filtered data in the query storage module.

The system in yet another aspect may include a consolidation module operable to determine whether the intercepted query was received previously, and if the intercepted query was received previously, the-consolidation module is operable to update the data related to the intercepted query such as the number of times the query was performed during certain time interval. In this aspect, the storage module may store the updated data in the query storage module without storing the same query and the results again.

Further features as well as the structure and operation of various embodiments are described in detail below with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram illustrating the query data collection in one embodiment.

FIG. 2A is a flow diagram illustrating the method of storing query information in one embodiment.

FIG. 2B is a flow diagram illustrating the method of storing the query information in another embodiment.

FIG. 3 is a flow diagram illustrating the method of querying the stored query information in one embodiment.

DETAILED DESCRIPTION

FIG. 1 is a block diagram illustrating the components for maintaining history of query results in one embodiment. A user 102 requests for information as shown at 104, for example, from a query system 108. One role of the query system 108 is to return the information 106 to the user 102. For example, a user 102 may query or ask for stores that are selling a certain product ABC, prices for the product, and estimated delivery dates. In response to the user's request, the query system 108 may return the information requested as a result. Examples of the returned result may include: shop 1 sells product ABC at price $100, estimated delivery date is in 2 days, etc.

Queries in another aspect may include a process of an action for which information is typically returned. For example, a query may include an action of ordering a product (ABC) and including a shipping address and specifying a method of payment. In this case, a corresponding query result may include the action of accepting the order and providing shipment date confirmation, or not accepting the order and providing a reason (XYZ) not the non-acceptance.

Typically, when a query system 108 receives a query from a user 102, the query system 108 retrieves the information from a storage system 114. For example, the query system 108 requests as shown at 110 for the information it needs from the storage system 114. In other cases, the query system 108 may have its own cache memory for storing the information. In these cases, the query system 108 may not request each time the information from the storage system 114. The query system 108 may, for example, fetch the information one time and keep the information in its own memory for a predetermined amount of time. Either way, regardless of whether the information was already available in the query system 108 or the query system 108 retrieved it from the storage system 114 via 112, the retrieved information is then returned to the user at 106. For retrieving information from the storage system 114, the query system 108 may further format the query into a form understandable by the storage system 114.

Thus, the requests made at 104 and 110 may or may not have one-to-one mapping. For example, even if the user 102 makes a request at 104, the query system 108 may not make the corresponding request at 110. For instance, if the query system 108 has its own memory or cache or other capability to store previously requested information, the query system 108 may not need to further make a request to the storage system 114 for the information.

Various information about the user's query, such as the query itself 104, returned results 106, and the context information 107 are intercepted as shown at 124 (or 126) and stored as shown at 116 in the storage system 118. In one aspect, the information 104 and 106 and 107 may be filtered as desired as shown at 120, using the filter criteria. Thus, in one aspect, not all information from the query and subsequent returned result need to be stored. Examples of filter criteria include selecting information about certain products or types of products, selecting information about the shops that sell certain products or types of products, or selecting only first 20 returned results, etc.

Further, the information 104 and 106 and 107 may be stored under a consolidated form as shown at 122, or under a consolidated and unconsolidated form. For example, if the same query was performed many times a day, and the same result was provided for each of the same query, the multiple queries and results may be stored only once with a counter or flag that indicates how many times this query and corresponding result has occurred (e.g. in a day or in some other given time period). Thus, after a query and a corresponding result is stored the first time, subsequent queries and results that are the same as the previous one need not be stored again, but only have its counter incremented. Other information such as the times of the day the queries were performed may be updated or stored in such cases. Thus, although the query and its results may be stored once, each time the query is performed, that time is recorded and stored with any other context information in one embodiment.

In another aspect, for the queries to be consolidated, the queries need not be strictly identical. For example, queries having a selected number of common elements may be grouped together. In the below example of four queries:

Query 1: asked for product P1, color RED

Result 1: 32 offers returned

Query 2: asked for product P1, color GREEN

Result 2: 12 offers returned

Query 3: asked for product P2, color YELLOW

Result 3: 245 offers returned

Query 4: asked for product P2, color BLUE

Result 4: 34 offers returned,

all four queries are different. However, queries 1 and 2 may be grouped based on the commonality of product P1 and the criteria that a color was specified, regardless of which color. Similarly, queries 3 and 4 may be grouped based on the commonality of product P2 and the criteria that a color was specified, regardless of which color. Thus, queries may be grouped or consolidated based on a selected common criteria.

The stored information then may be made available to interested users and processes as will be described herein below. The storing of query information may take place at the user query level 104 via the path 124 as shown. Alternatively, the storing of query information may take place at the query system level 110 as shown at path 126. The storage of query information may take place via this path 126, for instance, if there is a one-to-one mapping equivalent between the queries performed at 104 and the queries performed at 110. The one-to-one mapping equivalent may be found, for example, where the query system at 104 has no caching logic or uses a caching logic that is included within the storage system.

The information stored at 116 may be any information about the context of the query including, but not limited to, information about the user 102 such as cookies or profiles related to the user 102, the timestamp of the initial request, time zone information, etc. The information stored at 116 may also be about the query such as the definition of the query, that is, the query itself; the tool used for the query, for example, a world wide web page interface or a form used to input the query information and the values entered by the user on different fields of the form used for the query. If the tool used for the query was prompting for an SQL query (Structured Query Language), the text of that query and related information such as where the results are to be fetched may be included.

The information stored at 116 may also be any information about the returned results, including but not limited to, the data, the order and timestamp in which the results were returned, whether the return of results has been interrupted and if so, whether the interruption was by the user or the query system, whether the user viewed all the returned results, the results the user viewed, and the time when the user viewed particular results, which results were viewed more than once, etc.

The information stored about the query may be the query data themselves, statistics about the query, amount of time it took to retrieve the results, or groupings (consolidations). Statistics about the query may include maximum, minimum, and/or average values of returned information, for example, if a query returned price results for a certain item, then maximum, minimum, and average price information. Other statistics may include, for example, maximum, minimum, and average price information gathered over a number of queries, over all queries performed during a calendar month, etc.

A user at 128 may use a query system 130 to extract the information stored in the storage system 118, for example, a query storage system that stores the data about the queries performed. Other processes 132 may also use a query system 134 to retrieve the information stored in the storage system 118. Other processes 132 may include a process that automatically updates product prices, depending on information it finds from the stored queries and related information. The user at 128, for example, may query the storage system 118 for information about queries where the user's name or company or products shipped by the user's company may be involved, either as search criteria or as part of the result of past queries. The storage systems described herein 114, 118, may include any known storage systems for storing data, such as conventional database systems.

FIG. 2A is a flow diagram illustrating the method of storing query information in one embodiment. At 202, a user or an automatic process requests a query, for instance, to retrieve information. Examples of query entry include, but are not limited to, entering keywords on user interfaces provided on the World Wide Web such as the search engine web pages and particular vendor's web pages. Queries may also be in the form of structured query language (SQL) or natural languages. For example, a query process may translate a user entered query into an SQL query, or a process run as a part of an application program may request a query in a form of SQL.

At 204, a query system receives the user's query and requests the information asked in the query from an appropriate information storage system. If the query system has memory capabilities, the query system may already have requested the information from the information storage system, and provides the information to the user without requesting again the information from the storage system.

At 206, the storage system retrieves the information requested and returns to the query system, for example, if the query system requested the information. The storage system may be a database system. At 208, the information returned to the query system, the query, and other data about the query are saved. This returned information, the query, and other data may be filtered as desired and consolidated as shown at 210. The information returned to the query system, the query, other data about the query are stored, and any other data or information resulting from the filtering and/or consolidation steps are stored in a storage system. In another aspect, filtering and/or consolidation may be performed after the entire query information is first stored.

FIG. 2B is a flow diagram illustrating the method of storing the query information in another embodiment. At 214, a user looking for information enters a query in a similar manner described with respect to FIG. 2A. At 216, the query system receives the query from the user. At 218, information is retrieved from a storage system. The storage system, for example, may be a database system. At 220, the retrieved information is saved along with the query and other data about the query. The saved query information may be further filtered and/or consolidated. At 222, the retrieved information is also returned to the query system. At 224, the query system provides the retrieved information to the user.

FIG. 3 is a flow diagram illustrating the method of querying the stored query information in one embodiment. The saved data about the query, for example, the query, the returned result, and other context data about the query, filtered and/or consolidated query information may be used to mine for various purposes, including business promotion and improvement purposes. The data saved, for instance, according to the embodiments described with references to FIGS. 2A and 2B, may be stored in a separate storage system (118 FIG. 1). At 302, a user interested in various aspects of query data may request information related to the saved query information. At 304, the information is retrieved and at 306 the retrieved information is provided to the user. In addition to or alternatively, processes may automatically request information related to the saved query data. These processes may include processes that generate various reports on the saved queries, processes that automatically update prices, depending on certain criteria including information about the queries, their results and other related information. Other processes may include processes that propose to add products with certain characteristics to the offers of a company, etc.

The stored queries may also be used to analyze user needs and make business decisions based on those user needs. For instance, from the stored query data, it may be determined that a typical users of certain demographics desire certain products or services at a certain price. Businesses can thus use the query data to cater to their customers more productively and efficiently. Other data mining may be performed using the stored query data.

The system and method of the present disclosure may be implemented and run on a general-purpose computer. The embodiments described above are illustrative examples and it should not be construed that the present invention is limited to these particular embodiments. Thus, various changes and modifications may be effected by one skilled in the art without departing from the spirit or scope of the invention as defined in the appended claims. 

1. A method of maintaining a history of query results, comprising: receiving a query; retrieving one or more results of the query; and storing data about the query along with the one or more results of the query, for access in response to a future query.
 2. A method of maintaining a history of query results, comprising: receiving a query; receiving one or more results of the query; gathering context information about the query; filtering the query, the one or more results of the query, or the context information, or combination thereof into filtered query data; and storing at least the filtered query data along with the one or more results of the query, for access in response to a future query.
 3. A method of maintaining a history of query results, comprising: receiving a query; receiving one or more results of the query; gathering context information about the query; determining if the query was previously performed; and if the query was previously performed, determining if the results of the query are generally the same as the results of the previously performed query; if the results of the query are generally the same as the results of the previously performed query, consolidating the query along with the one or more results of the query into consolidated query data; and storing at least the consolidated query data.
 4. The method of claim 3, wherein the consolidated query data includes a number of times the query was received and a number of times the same result to the query was received.
 5. The method of claim 4, wherein the consolidated query data includes a number of times the query was received in a given time period and a number of times the same result to the query was received in the given time period.
 6. The method of claim 3, wherein the context information includes timestamp of the query.
 7. The method of claim 3, wherein the context information includes one or more results, which the user selected to view from the one or more results of the query.
 8. The method of claim 3, further including: querying the stored consolidated query data.
 9. The method of claim 3, wherein the query, the one or more results of the query, of and the context information are stored and used to provide information as a result to a query.
 10. The method of claim 3, wherein the method further includes grouping a plurality of queries received according to one or more selected common criteria used in the plurality of queries.
 11. A system for maintaining a history of query results, comprising: a query module operable to receive a query and return one or more results; a storage module operable to intercept the query and the one or more results from the query module, the storage module further operable to store the query along with the one or more results of the query in the storage module.
 12. The system of claim 11, further including: a filter module operable to filter the intercepted query and the one or more results, wherein the storage module is operable to store the filtered query and the one or more results.
 13. The system of claim 12, further including: a consolidation module operable to determine whether the intercepted query was received previously, and if the intercepted query was received previously, further operable to update data related to the intercepted query, wherein the storage module is operable to store the updated data.
 14. The system of claim 13, wherein the data related to the intercepted query includes a number of times the intercepted query was received and, a number of times the same result to the intercepted query was received.
 15. The system of claim 11, further including: a second storage module operable to receive the query from the query module, to retrieve the one or more results from a data storage, and to return the one or more results to the query module.
 16. The system of claim 15, wherein the query and the one or more results are intercepted from the second storage module for storing in the storage module.
 17. The system of claim 11, further including: a second query module operable to retrieve information from the storage module.
 18. The method of claim 1, further comprising: gathering context information about the query; storing the context information along with the data about the query and the one or more results of the query.
 19. The method of claim 18, wherein the context information includes information about a user that submitted the query.
 20. The method of claim 19, wherein the context information also includes information regarding which of the results were viewed by the user.
 21. The method of claim 13, further comprising: comparing the one or more results with previous results from the query; and wherein the update data includes differences between the one or more results and the previous results. 